/**
 * 
 */
package fr.ema.arch3d.model.architecture.assembly;

import java.util.List;

import fr.ema.arch3d.model.architecture.configuration.AbstractComponentClass;
import fr.ema.arch3d.model.architecture.configuration.AbstractConnectorClass;

/**
 * class description
 * 
 * @version    version 15 oct. 2009
 * @author     Huaxi (Yulin) ZHANG
 */
public interface Assembly {
    /**
     * Gets the name of this assembly
     *
     * @return  the name of this assembly
     */
    String getName();


    /**
     * Getter of the property <tt>cmpInstances</tt>
     *
     * @return Returns the cmpInstances.
     *
     */
     List getCmpInstancees();


    /**
     * Getter of the property <tt>ConnectorInstances</tt>
     *
     * @return Returns the ConnectorInstances.
     *
     */
     List getConnectorInstancees();



    /**
     * Inserts a <code>AbstractComponentInstance</code>
     *
     * @param cmpInstance  the <code>AbstractComponentInstance</code> to add.
     */
    void insertCmpInstance(AbstractComponentInstance cmpInstance);

    /**
     * Inserts a <code>AbstractConnectorInstance</code>.
     *
     * @param ConnectorInstance  the <code>AbstractConnectorInstance</code> to add.
     */
    void insertConnectorInstance(AbstractConnectorInstance ConnectorInstance);

    /**
     * Removes a <code>ComponentInstance</code>
     *
     * @param cmpInstance  the <code>AbstractComponentInstance</code> to remove.
     */
    void removeCmpInstance(AbstractComponentInstance cmpInstance);

    /**
     * Removes a <code>AbstractConnectorInstance</code>
     *
     * @param ConnectorInstance  the <code>AbstractConnectorInstance</code> to remove
     */
    void removeConnectorInstance(AbstractConnectorInstance ConnectorInstance);
}
